//
//  ImageHash.h
//  TestDemo
//
//  Created by fengxijun on 16/6/8.
//  Copyright © 2016年 goappbox. All rights reserved.
//

#import <Foundation/Foundation.h>

typedef NS_ENUM(NSUInteger,PHAHammingDistanceType) {
    PHAHammingDistanceWithDifferent = 0,
    PHAHammingDistanceWithLittle = 1 << 0,
    PHAHammingDistanceWithMore = 1 << 2,
    PHAHammingDistanceWithSame = 1 << 3,
};

@interface ImageHash : NSObject

/**
 * 计算"汉明距离"（Hamming distance）。
 * 如果不相同的数据位不超过5，就说明两张图片很相似；如果大于10，就说明这是两张不同的图片。
 * @param sourceHashCode 源hashCode
 * @param hashCode 与之比较的hashCode
 */
+ (NSInteger)hammingDistance:(NSString *)sourceHashCode hashCode:(NSString *)hashCode;

/**
 * 灰度值计算
 * @param pixels 像素
 * @return NSInteger 灰度值
 */
+ (UInt32) grayWithR:(int)r g:(int)g b:(int)b;

/**
 * 计算数组的平均值
 * @param pixels 数组
 * @return NSInteger 平均值
 */
+ (UInt32) average:(UInt32*)pixels count:(size_t)count;

/**
 * 二进制转为十六进制
 * @param int binary
 * @return char hex
 */
+ (char) binaryToHex:(UInt32)binary;

+ (PHAHammingDistanceType)checkImagePHA:(NSString *)source destion:(NSString *)destion;

@end
